home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / utilitys / 9 / scratch.bas < prev    next >
Encoding:
BASIC Source File  |  1985-11-19  |  16.3 KB  |  300 lines

  1. 10 START:fullw 2:clearw 2:nr=24:ni=31:nv=27:option base 1:goto INITIALIZE
  2. 30 CASE:'change from lower to upper case
  3. 40 for x=1 to len(cm$):b$=mid$(cm$,x,1)
  4. 50 if b$>="a" and b$<="z" then mid$(cm$,x,1)=chr$(asc(b$)-32)
  5. 60 next:return
  6. 70 TRANS:'print translated text
  7. 80 gotoxy 5,7:color 2
  8. 90 for x=1 to len(a$):if mid$(a$,x,1)="=" then mid$(a$,x,1)="!":goto 100
  9. 95 mid$(a$,x,1)=chr$(asc(mid$(a$,x,1))-1)
  10. 100 next:? a$:a$="":return
  11. 110 RENEW:'update screen
  12. 120 color 1:gosub DESCRIPTION:gosub VECTORS:gosub ITEMS:gosub INVENTORY:return
  13. 130 DESCRIPTION:'print room name
  14. 140 gotoxy 9,2:? space$(25):gotoxy 9,2:a$=room$(room-4):gosub 90:return
  15. 150 VECTORS:'display exits
  16. 160 gotoxy 9,4:? space$(15)
  17. 170 for x=0 to 5:vector(x+1)=vecs((room-4)*6-5+x):next
  18. 180 dr=0:gotoxy 9,4
  19. 190 for x=1 to 6:if vector(x)>0 then ? mid$(singles$,x,1);" ";:dr=1
  20. 200 next:if dr=0 then ? "None";
  21. 210 return
  22. 220 ITEMS:'display visible items
  23. 230 color 1:for x=11 to 15:gotoxy 4,x:? space$(14):next
  24. 240 it=0:y=11:for z=1 to ni
  25. 250 if abs(iloc(z))=room then gotoxy 4,y:a$=item$(z):gosub 90:it=1:y=y+1
  26. 260 next:if it=0 then gotoxy 4,11:? "Nothing"
  27. 270 return
  28. 280 INVENTORY:'display inventory items
  29. 290 for x=11 to 15:gotoxy 19,x:? space$(14):next
  30. 300 i=0:y=11:for z=1 to 5
  31. 310 if inv(z)<>0 then gotoxy 19,y:a$=item$(inv(z)):gosub 90:i=1:y=y+1
  32. 320 next:if i=0 then gotoxy 19,11:? "Nothing"
  33. 330 return
  34. 340 PARSER:'get command
  35. 350 if len(a$)>0 then gosub TRANS
  36. 360 on error goto 2870
  37. 370 if drgcnt>0 and room<>24 then drgcnt=drgcnt+1:if drgcnt>10 then iloc(13)=0:iloc(28)=-24:drgcnt=0
  38. 380 color 1:? chr$(7):gotoxy 2,8:input cm$:gosub CASE
  39. 390 gotoxy 4,8:? space$(31):gotoxy 5,6:? space$(30):gotoxy 5,6:? cm$
  40. 400 gotoxy 5,7:? space$(30):gotoxy 5,7:color 2
  41. 405 if cm$="QUIT" then gosub LIVEMOUSE:color 1:end
  42. 410 if cm$="HELP" then a$="Uzqf!jo!uif!fodszqufe!ijou":h=1:goto PARSER
  43. 420 if h=1 then h=0:a$=cm$:goto PARSER
  44. 430 if len(cm$)=1 then 500
  45. 440 x=instr(cm$," "):if x<3 then ? "HUH?":goto PARSER
  46. 450 verb$=left$(cm$,3):noun$=mid$(cm$,x+1,3)
  47. 460 v=instr(vtab$,verb$):if v=79 then v=6
  48. 465 if v>0 then v=tr(int(v/3)+1):goto 480
  49. 470 ? "Don't understand that verb!":goto PARSER
  50. 480 n=instr(ntab$,noun$):if n>0 then n=int(n/3)+1:goto 500
  51. 490 if room<>14 or v<>8 then ? "Don't understand that noun!":goto PARSER
  52. 500 turn=turn+1:if int(turn/10)<>turn/10 then 510
  53. 505 iloc(9)=0*(iloc(9)<0)+11*(iloc(9)=0):if room=11 then gosub ITEMS
  54. 506 if iloc(9)=-11 then bus=bus+1:if bus>2 then bus=1
  55. 510 if room=15 then scr=scr+1:if scr=3 then a$="IF!UISPXT!IJT!QJUDIGPSL=":goto DEAD
  56. 520 if room<>15 then scr=0
  57. 530 color 2:gotoxy 5,7
  58. 540 if bturn>0 then bturn=bturn+1:if bturn=5 then bturn=0:room=11:iloc(9)=0:gosub RENEW:a$="Zpv!hfu!upttfe!pgg!uif!cvt":goto PARSER
  59. 550 if len(cm$)=1 then goto ONELETTER
  60. 560 on v goto 650,800,970,1200,1250,1430,1460,1510,1610,1640,1720,1740,1780,1840,1880,1960,2050
  61. 570 ONELETTER:'single letter commands
  62. 580 v=instr(singles$,cm$):if v=0 then ? "WHAT?":goto PARSER
  63. 590 if room=24 and iloc(13)=-24 and iloc(14)=-1 then a$="UIF!XJOP!BUUBDLT!ZPV=":goto DEAD
  64. 610 if vector(v)=0 then ? "You can't go that way!":goto PARSER
  65. 620 ? "Okay":room=vector(v):gosub RENEW:goto PARSER
  66. 650 color 2
  67. 660 if room=25 and wt=0 and iloc(14)=-1 and n=39 then wt=1:a$="Zpv!gjmm!uif!cpuumf":goto PARSER
  68. 670 if n=8 and op3=1 and (iloc(4)=0 or iloc(4)=-1) then 720
  69. 680 if n=7 and op1=1 and iloc(n)=0 and room=12 then 720
  70. 685 if n=2 and op=1 and iloc(n)=0 and iloc(1)=-1 then 720
  71. 690 if n=14 and iloc(14)=0 and room=24 then 720
  72. 695 if n=26 and iloc(n)=0 and room=24 then 720
  73. 697 if n=27 and iloc(n)=0 and iloc(5)=-1 then 720
  74. 700 if n=29 and iloc(19)=-1 then 720
  75. 705 if (iloc(30)=room or iloc(30)=-1) and n=23 and iloc(n)=0 then 720
  76. 707 if n>ni then goto CANT
  77. 710 if iloc(n)<-4 then ? "You can't get that!":goto PARSER
  78. 715 if abs(iloc(n))<>room then ? "It's not here!":goto PARSER
  79. 720 if iloc(n)=-1 then ? "You already have it!":goto PARSER
  80. 730 i=0:for x=1 to 5:if inv(x)=0 then i=x
  81. 740 next:if i=0 then ? "You can't carry anymore!":goto PARSER
  82. 750 if room=27 and n=19 and iloc(18)=-room then a$="TIF!TBX!ZPV=!KBJM!UJNF=":goto DEAD
  83. 760 if room=28 and iloc(20)=-room then a$="UIF!EPH!DIFXT!ZPV!VQ=":goto DEAD
  84. 770 ? "Okay":iloc(n)=-1:inv(i)=n:color 1
  85. 780 gosub ITEMS:gosub INVENTORY:goto PARSER
  86. 800 color 2
  87. 810 if n<33 or n>34 then 850
  88. 820 pay=n-32:if pay>tok then a$="Zpv!epo(u!ibwf!fopvhi":goto PARSER
  89. 830 tok=tok-pay:if tok>0 then 835
  90. 831 for x=1 to 5:if inv(x)=8 then inv(x)=0
  91. 832 next:iloc(8)=0:gosub ITEMS:gosub INVENTORY
  92. 835 if pay<bus then bturn=4:goto 540
  93. 840 a$="Plbz-!uif!cvt!mfbwft":bxit=bus(bus):bturn=0:goto PARSER
  94. 850 if iloc(n)<>-1 then ? "You don't have it!":goto PARSER
  95. 860 for x=1 to 5:if inv(x)=n then i=x
  96. 870 next:if room=27 and n=23 then b$="(Pi=!J(mm!hfu!b!qmbuf=(":iloc(23)=0:iloc(18)=0:inv(i)=0:goto 950
  97. 880 if room=28 and n=26 then b$="Uif!eph!hpccmft!ju!vq":iloc(n)=-4:iloc(24)=-room:iloc(20)=0:inv(i)=0:goto 950
  98. 890 if n=29 and iloc(14)=-1 then drg=1:b$="///jo!uif!cpuumf":iloc(n)=0:inv(i)=0:goto 950
  99. 900 if room=24 and iloc(13)=-24 and drg=1 and n=14 then drgcnt=1:iloc(14)=0:inv(i)=0:color 1:b$="Uif!xjop!ublft!ju!cbdl":goto 950
  100. 910 if room=25 and n=27 then iloc(n)=-4:inv(i)=0:b$="///jo!uif!ejti":goto 950
  101. 920 if room=25 and bl=0 and n=14 and wt=1 and wn=1 then a$="Uif!qsjftu!cmfttft!uif!xbufs":bl=1:goto PARSER
  102. 925 cnt=0:for x=1 to ni:if abs(iloc(x))=room then cnt=cnt+1
  103. 926 next:if cnt=5 then ? "No more room here!":goto PARSER
  104. 930 inv(i)=0:iloc(n)=room:? "Okay":color 1
  105. 940 gosub ITEMS:gosub INVENTORY:goto PARSER
  106. 950 color 1:gosub ITEMS:gosub INVENTORY:a$=b$:gotoxy 5,7:goto PARSER
  107. 970 if n>ni then 1180
  108. 990 if n=1 and iloc(n)=-1 and op=1 and iloc(2)=0 then a$="Uifsf(t!b!mfuufs!jotjef":goto PARSER
  109. 1000 if room=7 and n=4 and op2=0 then a$="Uif!mje!jt!mpdlfe-!ijohfe":goto PARSER
  110. 1010 if room=12 and n=6 and op1=1 and iloc(7)=0 then a$="Uifsf(t!b!tdsfxesjwfs":goto PARSER
  111. 1020 if n=4 and (iloc(n)=-1 or iloc(n)=room) and op3=1 and iloc(8)=0 then a$="Uifsf(sf!uplfot!jo!ju":goto PARSER
  112. 1030 if n<>9 or iloc(n)<>-room then 1065
  113. 1040 a$="Ju(t!hpjoh!up!":on bus goto 1050,1060
  114. 1050 a$=a$+"EPXOVOEFS":goto PARSER
  115. 1060 a$=a$+"EPXOJOHWJMMF":goto PARSER
  116. 1065 if n=8 and iloc(8)=-1 then ? "You have ";tok;" of them":goto PARSER
  117. 1070 if room=14 and n=11 then a$="Uifsf(t!b!cvuupo!po!ju":goto PARSER
  118. 1080 if room=26 and n=17 then a$="CFXBSF!PG!EPH":goto PARSER
  119. 1090 if room=24 and n=25 and iloc(26)=0 then a$="Uifsf(t!bo!pme!ibncvshfs!jo!ju":goto PARSER
  120. 1100 if n=5 and iloc(n)=-1 and iloc(27)=0 then a$="Uifsf(t!b!epmmbs!jo!ju":goto PARSER
  121. 1110 if room=25 and n=16 then a$="If!ibt!b!dpmmfdujpo!ejti":goto PARSER
  122. 1120 if room=25 and n=15 then a$="Uifsf(t!xbufs!jo!ju":goto PARSER
  123. 1130 if room=24 and (n=13 or n=28) and iloc(14)=0 then a$="If(t!hpu!b!cpuumf":goto PARSER
  124. 1140 if n=19 and iloc(n)=-1 then a$="Uifsf(t!tmffqjoh!qjmmt!jo!ju":goto PARSER
  125. 1150 if n=14 and iloc(n)=-1 and wn=0 then a$="Uifsf(t!xjof!jo!ju":goto PARSER
  126. 1160 if n=30 and iloc(n)=-1 and iloc(23)=0 then a$="Uifsf(t!dppljft!jo!ju":goto PARSER
  127. 1170 if n=3 and iloc(n)=-1 then a$="Uif!ujumf!jt;!TUSFFU!DPEFT":goto parser
  128. 1172 if room=15 and n=12 then a$="XPX=!Ipsot!boe!fwfszuijoh=":goto PARSER
  129. 1180 ? "You see nothing special":goto PARSER
  130. 1200 if n=1 and iloc(n)=-1 and op=0 then a$="Zpv!sjq!ju!pqfo":op=1:goto PARSER
  131. 1210 if room=12 and n=6 and op1=0 then ? "Okay":op1=1:goto PARSER
  132. 1220 if n=4 and (iloc(n)=-1 or iloc(n)=room) and op2=1 then a$="Pqfojoh///":op3=1:goto PARSER
  133. 1230 if n=4 and (iloc(n)=-1 or iloc(n)=room) then a$="Zpv!epo(u!ibwf!uif!lfz":goto PARSER
  134. 1235 goto CANT
  135. 1250 if n<>2 or iloc(n)<>-1 then 1400
  136. 1260 clearw 2:gotoxy 17,0:a$="777!Gjsfgbmm!Dpvsu":gosub 90
  137. 1270 gotoxy 17,1:a$="Epxovoefs-!OK!43576":gosub 90
  138. 1280 gotoxy 17,2:a$="Kvof!23-!2:97":gosub 90
  139. 1290 a$="Efbs!ofjhicps-":gosub 90:?:a$="JNBHJOF=!Bozuijoh!zpv!eftjsf!dbo!cf":gosub 90
  140. 1300 a$="zpvst!xjuijo!35!ipvst=!Uibu(t!sjhiu=":gosub 90
  141. 1310 a$="POMZ!35!IPVST=!Npofz-!Mpwf-!b!ofx":gosub 90
  142. 1320 a$="dbsffs/!!Bozuijoh!bu!bmm/!Dbo!zpv":gosub 90
  143. 1330 a$="usvtu!vt@!Ifz-!xf(wf!cffo!nbljoh":gosub 90
  144. 1340 a$="hsfbu!efbmt!gps!dfouvsjft/!Up!ublf":gosub 90
  145. 1350 a$="bewboubhf!pg!uijt!gboubtujd!pggfs-":gosub 90
  146. 1360 a$="kvtu!tjho!po!uif!epuufe!mjof!)SFE!jol":gosub 90
  147. 1370 a$="pomz-!qmfbtf*/":gosub 90:?:a$="Ns/!Tdsbudi":gosub 90
  148. 1380 color 1:gotoxy 10,17:? "Press RETURN";:input a$:gosub SCREEN:gosub RENEW
  149. 1390 goto PARSER
  150. 1400 if room=26 and n=17 then a$="CFXBSF!PG!EPH":goto PARSER
  151. 1410 if n=3 and iloc(n)=-1 then a$="Vtf;!GJOE!tusffu!obnf":goto PARSER
  152. 1430 if n=2 and iloc(n)=-1 and iloc(31)=-1 then a$="Zpv(wf!usbefe!bxbz!zpvs!tpvm=":goto DEAD
  153. 1440 goto CANT
  154. 1460 if (iloc(4)<>-1 and iloc(4)<>room) or iloc(7)<>-1 or n<>32 or op2=1 then goto CANT
  155. 1470 a$="///Vtjoh!uif!tdsfxesjwfs":op2=1:goto PARSER
  156. 1510 if room=11 and n=9 and iloc(9)=-room then room=13:bturn=1:gosub RENEW:a$="Plbz":goto PARSER
  157. 1520 if room<>14 or but=0 then 1580
  158. 1530 but=0:if n=36 then room=15:goto 1570
  159. 1540 if n=37 then room=16:goto 1570
  160. 1550 if n=38 then room=9:goto 1570
  161. 1555 if n=45 then room=14:goto 1570
  162. 1560 a$="Opuijoh!ibqqfot":goto PARSER
  163. 1570 gosub RENEW:a$="Qpppggggg=":goto PARSER
  164. 1580 if room=26 and n=22 then a$="ZPV(SF!UISPXO!JO!KBJM=":goto DEAD
  165. 1590 goto CANT
  166. 1610 if room=13 and n=9 then room=bxit:? "Okay":gosub RENEW:goto PARSER
  167. 1620 goto CANT
  168. 1640 if n<>10 or room<>13 then 1680
  169. 1650 a$="(Gbsf!jt!":on bus goto 1660,1670
  170. 1660 a$=a$+"2!uplfo(":goto PARSER
  171. 1670 a$=a$+"3!uplfot(":goto PARSER
  172. 1680 if room=24 and n=13 and iloc(13)=-24 then a$="If!cvsqt!boe!tnjmft":goto PARSER
  173. 1690 if room=27 and n=18 and iloc(n)=-27 then a$="(Ipx!bcpvu!b!tobdl@(":goto PARSER
  174. 1695 if room=25 and n=16 and iloc(27)<>-4 then a$="(Dibsjuz!jt!hppe!gps!uif!tpvm(":goto PARSER
  175. 1697 if room=25 and n=16 then a$="(Ipx!nbz!J!ifmq!zpv@(":goto PARSER
  176. 1700 goto CANT
  177. 1720 if room=14 and n=35 then a$="B!wpjdf!tbzt;!(Foufs!Dpef(":but=1:goto PARSER
  178. 1730 goto CANT
  179. 1740 if room=26 and n=22 and iloc(18)=0 then room=27:gosub RENEW:a$="Epps!jt!pqfo/!Zpv!tufq!jotjef":gotoxy 5,7:goto PARSER
  180. 1750 if room=26 and n=22 then room=27:gosub RENEW:a$="B!mbez!mfut!zpv!jo":gotoxy 5,7:goto PARSER
  181. 1760 goto CANT
  182. 1780 if n<>13 or iloc(14)<>-1 or wn=1 then 1810
  183. 1790 if room=24 and iloc(13)=-24 then a$="UIF!XJOP!BUUBDLT!ZPV=":goto DEAD
  184. 1800 wn=1:wt=0:a$="Zpv!qpvs!pvu!uif!xjof":goto PARSER
  185. 1810 if room=15 and iloc(14)=-1 and bl=1 and n=39 then a$="IF!NFMUT!BXBZ!UP!OPUIJOH":goto WINNER
  186. 1820 if room=15 and iloc(14)=-1 and n=39 then a$="IF!UISPXT!B!QJUDIGPSL=":goto DEAD
  187. 1830 goto CANT
  188. 1840 if room<16 or room>24 and n=21 and iloc(n)=-1 then a$="Xiffffffff=":goto PARSER
  189. 1850 if room>15 and room<25 and n=21 and iloc(n)=-1 then room=9:gosub RENEW:a$="Pgg!zpv!hp=":goto PARSER
  190. 1860 goto CANT
  191. 1880 if n<>40 then goto CANT
  192. 1890 ? "Saving...":open "O",#1,"SCRATCH.DAT"
  193. 1900 for x=1 to ni:write #1,iloc(x):next
  194. 1910 for x=1 to 5:write #1,inv(x):next
  195. 1920 write #1,room,op,op1,op2,op3,turn,bturn,bus,tok,bxit,but
  196. 1930 write #1,drg,drgcnt,wat,bl,wn,scr:goto 2020
  197. 1960 if n<>40 then goto CANT
  198. 1970 on error goto 2030:? "Loading...":open "I",#1,"SCRATCH.DAT"
  199. 1980 for x=1 to ni:input #1,iloc(x):next
  200. 1990 for x=1 to 5:input #1,inv(x):next
  201. 2000 input #1,room,op,op1,op2,op3,turn,bturn,bus,tok,bxit,but
  202. 2010 input #1,drg,drgcnt,wat,bl,wn,scr:gosub RENEW
  203. 2020 close:gotoxy 5,7:color 2:? "Done!     ":goto PARSER
  204. 2030 a$="OP!HBNF!TBWFE=":resume PARSER
  205. 2050 if n<41 or n>44 or iloc(3)<>-1 then goto CANT
  206. 2060 a$="Uif!dpef!jt;!":if n=41 then a$=a$+"GBM"
  207. 2070 if n=42 then a$=a$+"BJO"
  208. 2080 if n=43 then a$=a$+"WJM"
  209. 2085 if n=44 then a$=a$+"UPO"
  210. 2090 goto PARSER
  211. 2100 CANT:? "You can't do that!":goto PARSER
  212. 2110 DEAD:'Player blew it!
  213. 2120 clearw 2:gotoxy 18-len(a$)/2,5:gosub 90
  214. 2130 gotoxy 6,8:? "This adventure is over!"
  215. 2140 gotoxy 6,12:? "You lasted ";turn;" turns"
  216. 2150 color 1:gotoxy 8,17:? "Play again";:input a$
  217. 2160 if left$(a$,1)="Y" or left$(a$,1)="y" then gosub LIVEMOUSE:goto 2240
  218. 2170 if left$(a$,1)="N" or left$(a$,1)="n" then gosub LIVEMOUSE:end
  219. 2180 goto 2150
  220. 2190 WINNER:'Mission completed!
  221. 2200 clearw 2:gotoxy 18-len(a$)/2,5:gosub 90
  222. 2210 gotoxy 12,8:? "YOU WIN!!":gotoxy 6,12:? "It took you ";turn;" turns":goto 2150
  223. 2220 INITIALIZE:'set up game
  224. 2230 if peek(systab)=1 then gotoxy 10,10:? "You must have a color monitor!":for x=1 to 5000:next:end
  225. 2235 dim vector(6),vecs(nr*6),item$(ni),inv(5),room$(nr),iloc(ni+12),tr(nv)
  226. 2236 dim v%(4),ml%(50):av=varptr(v%(1)):strt=varptr(ml%(1))
  227. 2237 dim bus(2): bus(1)=14:bus(2)=16
  228. 2240 poke contrl,32:poke contrl+2,0:poke contrl+6,1:poke intin,2:vdisys(1)
  229. 2250 restore 2360:fullw 2:clearw 2:if peek(systab)=2 then linef 302,0,302,168
  230. 2260 color 2,1:fill 150,80
  231. 2270 ef=16:gosub TEXTEFFECT:gotoxy 5,5:? "M I S T E R  S C R A T C H"
  232. 2280 ef=4:gosub TEXTEFFECT:color 3:gotoxy 9,7:? " A Devilish Tale"
  233. 2290 ef=1:gosub TEXTEFFECT:color 4:if peek(systab)=2 then color 2
  234. 2300 gotoxy 15,9:? "by"
  235. 2310 gotoxy 10,10:? "Clayton Walnum":ef=0:gosub TEXTEFFECT
  236. 2340 for x=1 to 5:inv(x)=0:next:inv(1)=5:inv(2)=31
  237. 2350 for x=1 to nr*6:read vecs(x):next
  238. 2360 data 6,7,8,0,0,12,0,5,0,0,0,0,5,0,0,0,0,0,9,10,0,5,0,0
  239. 2370 data 0,8,0,0,0,0,8,11,0,0,0,0,10,0,0,0,0,0,0,0,0,0,5,0
  240. 2380 data 0,0,0,0,0,0,14,14,14,14,14,14,0,0,0,0,0,0,22,17,22,16,0,0
  241. 2390 data 16,18,24,0,0,0,17,19,25,0,0,0,18,20,26,0,0,0,19,21,0,0,0,0
  242. 2400 data 20,22,22,21,0,0,23,21,21,22,0,0,22,23,23,24,0,0,0,0,23,17,0,0
  243. 2410 data 0,0,0,18,0,0,0,0,0,19,0,0,0,0,28,26,0,0,0,0,0,27,0,0
  244. 2420 for x=1 to ni:read item$(x),iloc(x):next
  245. 2430 data Fowfmpqf,5,Mfuufs,0,Cppl,6,Kfxfmsz!cpy,7,Xbmmfu,-1,Uppm!lju,-12
  246. 2440 data Tdsfxesjwfs,0,Uplfot,0,Cvt,-11,Esjwfs,-13,Ufsnjobm,-14
  247. 2450 data Ns/Tdsbudi,-15,Xjop,-24,Cpuumf,0,Gpou,-25,Qsjftu,-25
  248. 2460 data Tjho,-26,Mbez,-27,Kbs!pg!qjmmt,27,Tobsmjoh!eph,-28,Cjdzdmf,28
  249. 2470 data Gspou!epps,-26,Dppljft,0,Ibqqz!eph,0,Hbscbhf!dbo,-24,Ibncvshfs,0
  250. 2480 data Epmmbs,0,Tmffqjoh!xjop,0,Qjmm,0,Tipqqjoh!cbh,5,Sfe!qfo,-1
  251. 2490 vtab$="GETTAKDROGIVLOOEXAOPEREASIGUNSREMGO ENTEXILEATALSPEPRE"
  252. 2500 vtab$=vtab$+"PUSKNOPOUEMPRIDSAVLOAFINPAY"
  253. 2510 for x=1 to nv:read tr(x):next
  254. 2520 data 1,1,2,2,3,3,4,5,6,7,7,8,8,9,9,10,10,11,11,12,13,13,14,15,16,17,18
  255. 2530 for x=1 to 11:read room$(x):next
  256. 2540 for x=12 to 19:room$(x)="Po!Epxojohwjmmf!Tu/":next
  257. 2550 for x=20 to nr:read room$(x):next
  258. 2560 data Jo!zpvs!mjwjoh!sppn,Jo!zpvs!efo,Jo!zpvs!cfesppn,Po!Nbjo!Tusffu
  259. 2570 data Po!Nbjo!Tusffu,Po!Nbjo!Tusffu,Bu!uif!cvt!tupq,Jo!uif!dfmmbs
  260. 2580 data Po!b!cvt,Po!Ipuufsupo!Tusffu,Jo!b!sfe!pggjdf
  261. 2590 data Jo!bo!bmmfz,Jo!b!divsdi,Jo!tpnfpof(t!gspou!zbse
  262. 2600 data Jo!b!mjwjoh!sppn,Jo!tpnfpof(t!cbdl!zbse
  263. 2610 ntab$="ENVLETBOOBOXWALKITSCRTOKBUSDRITERMR.WINBOTFONPRISIGLADJARDOGBIC"
  264. 2620 ntab$=ntab$+"DOOCOOHAPGARHAMDOLSLEPILBAGPEN"
  265. 2630 ntab$=ntab$+"HINONETWOBUTFALVILAINWATGAMFIRMAIDOWHOTTON"
  266. 2640 singles$="NSEWUD"
  267. 2645 for i=0 to 96 step 2:read c:poke strt+i,c:next
  268. 2646 data &h3f3c,&h22,&h4e4e,&h548f,&h2a6f,&h6,&h2a55,&h2040,&h41e8,&h10
  269. 2647 data &h2a90,&h2f3c,0,&h34,&h2f3c,0,&h36,&h3f3c,0,&h3f3c,0,&h4e4e
  270. 2648 data &hdffc,0,&hc,&h4e75,&h4e75,0,0,0,0,&h2a6f,&h6,&h2a55,&h2f15
  271. 2649 data &h2f3c,0,&h5e,&h3f3c,&h1,&h3f3c,0,&h4e4e,&hdffc,0,&hc,&h4e75,&h3,0
  272. 2650 room=5:op=0:op1=0:op2=0:op3=0:turn=0:bturn=0:bus=1:tok=4:bxit=11:but=0
  273. 2660 drg=0:drgcnt=0:wat=0:bl=0:wn=0:scr=0
  274. 2680 gosub SCREEN:gosub DEADMOUSE:gosub RENEW:goto PARSER
  275. 2690 SCREEN:'draw display
  276. 2700 poke contrl,32:poke contrl+2,0:poke contrl+6,1:poke intin,2:vdisys(1)
  277. 2705 restore 2730:clearw 2:color 2,4,2
  278. 2710 read a,b,c,d:if a=-1 then 2790
  279. 2720 linef a,b,c,d:goto 2710
  280. 2730 data 0,0,303,0,0,0,0,166,303,0,303,166,0,166,303,166
  281. 2740 data 92,0,92,10,218,0,218,10,10,10,293,10
  282. 2750 data 10,10,10,156,293,10,293,156,10,156,293,156
  283. 2760 data 15,14,288,14,15,15,15,151,288,15,288,151,15,151,288,151
  284. 2770 data 15,32,288,32,15,50,288,50,15,86,288,86,151,86,151,151
  285. 2780 data -1,-1,-1,-1
  286. 2790 fill 150,161:color 1,8,6,1,1:fill 150,5:fill 150,12
  287. 2795 if peek(systab)=2 then color 2
  288. 2800 gotoxy 11,0:? "MISTER SCRATCH":color 1
  289. 2810 gotoxy 2,2:? "PLACE:":gotoxy 2,4:? "EXITS:"
  290. 2820 gotoxy 2,10:? "YOU SEE:":gotoxy 17,10:? "YOU HAVE:"
  291. 2830 return
  292. 2840 TEXTEFFECT:'set effects for text
  293. 2850 poke contrl,106:poke contrl+2,0:poke contrl+6,1
  294. 2860 poke intin,ef:vdisys(1):return
  295. 2870 gotoxy 5,7:? "ERROR ";err;" AT LINE ";erl:resume PARSER
  296. 2880 DEADMOUSE:'get rid of the critter
  297. 2890 call strt(av):return
  298. 2900 LIVEMOUSE:'rodent reincarnation
  299. 2910 strt1=strt+62:call strt1(av):return
  300. SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS